/*
 * @Description: this指向
 * @Author: zzj
 * @Date: 2021-09-08 19:59:00
 * @LastEditors: zzj
 * @LastEditTime: 2021-09-08 20:21:28
 */

/*this指向函数据以执行的环境对象，
当在网页的全局作用域中调用函数时，this对象指向的就是window，nodejs环境this对象指向的是global。
this的取值与调用方式有关，一般情况下，如果使用"()"调用，那我们查看"()"前是不是函数名，如果是继续查看函数名前有没有"."如果有，"."前面的那个对象就是this，那么this指向这个对象；如果不是指向全局对象（global/window）
*/

var name=111;
var foo = function(){
  var name='ls';
  console.log(this.name);
}
var obj = {
    name:"terry",
    foo
}
foo();//全局变量 111/undefined    //node内部执行，和node运行文件执行：结果不一样
obj.foo();//对象变量 terry

var sayName = function(){
    console.log("hello i am "+this.name);
}
var p1 = {
    name:"terry",
    age:12,
    sayName:sayName
}
var p2 = {
    name:"larry",
    age:12,
    sN:sayName
}
sayName();//hello i am undfined
p1.sayName();//hello i am terry
//p2.sayName();//error
p2.sN();//hello i am larry


//node内部执行，和node运行文件执行：结果不一样
function test(a){
    this.x = a;
    return this;
  }
  var x = test(5); //window.x = 5 x = window 
  var y = test(6); //window.x = 6 y = window 
  console.log(x.x); //undefined 或者  6
  console.log(y.x);	//6